# HUB 插件主模块
# 包含插件的主要功能和UI定义

require 'sketchup.rb'
require_relative 'version'
require_relative 'ss'
require_relative 'dd'
require_relative 'ui'
require_relative 'config'

module HUB
  
  # 模块常量
  PLUGIN_NAME = 'HUB 快递柜'.freeze
  PLUGIN_ID = 'HUB'.freeze
  
  # 加载插件
  def self.load_plugin
    # 加载插件的主要功能
    puts "HUB 插件已加载，版本 #{VERSION}"
    
    # 添加菜单项和工具栏按钮
    create_menus
    create_toolbar
  end
  
  # 创建菜单
  def self.create_menus
    # 添加插件菜单项
    menu = UI.menu("Extensions")
    submenu = menu.add_submenu(PLUGIN_NAME)
    
    # 添加上传功能菜单项
    submenu.add_item("上传模型 (获取提取码)") { start_upload_model }
    
    # 添加下载功能菜单项
    submenu.add_item("下载模型 (输入提取码)") { start_download_model }
    
    # 添加帮助菜单项
    submenu.add_separator
    submenu.add_item("关于") { show_about_dialog }
  end
  
  # 创建工具栏
  def self.create_toolbar
    # 创建工具栏
    toolbar = UI::Toolbar.new(PLUGIN_NAME)
    
    # 获取图标目录路径
    icons_dir = File.join(File.dirname(__FILE__), 'icons')
    
    # 添加上传按钮
    cmd_upload = UI::Command.new("上传模型") { start_upload_model }
    cmd_upload.tooltip = "上传模型并获取提取码"
    cmd_upload.status_bar_text = "上传当前模型到HUB服务器并获取提取码"
    # 设置图标
    cmd_upload.small_icon = File.join(icons_dir, 'ss.png')
    cmd_upload.large_icon = File.join(icons_dir, 'ss.png')
    toolbar.add_item(cmd_upload)
    
    # 添加下载按钮
    cmd_download = UI::Command.new("下载模型") { start_download_model }
    cmd_download.tooltip = "通过提取码下载模型"
    cmd_download.status_bar_text = "输入提取码下载模型"
    # 设置图标
    cmd_download.small_icon = File.join(icons_dir, 'dd.png')
    cmd_download.large_icon = File.join(icons_dir, 'dd.png')
    toolbar.add_item(cmd_download)
    
    # 显示工具栏
    toolbar.show
  end
  
  # 启动上传模型过程
  def self.start_upload_model
    upload_model_impl
  end
  
  # 启动下载模型过程
  def self.start_download_model
    # 确保调用正确的方法
    begin
      puts "开始下载模型流程..."
      download_model_impl
    rescue => e
      puts "启动下载模型流程时出错: #{e.message}\n#{e.backtrace.join("\n")}"
      UI.messagebox("启动下载模型流程时出错: #{e.message}")
    end
  end
  
  # 启动导入本地模型过程
  def self.start_import_local
    begin
      puts "开始导入本地模型..."
      import_from_local
    rescue => e
      puts "启动导入模型流程时出错: #{e.message}\n#{e.backtrace.join("\n")}"
      UI.messagebox("启动导入模型流程时出错: #{e.message}")
    end
  end
  
  # 显示关于对话框
  def self.show_about_dialog
    UI.messagebox("HUB 快递柜 插件\n版本: #{VERSION}\n日期: #{VERSION_DATE}\n\n此插件提供模型上传和下载功能。\n\n作者：詹广权\n网站：http://www.cdsjcc.cn/xgj", MB_OK)
  end
  
  # 初始化插件
  self.load_plugin
  
end # module HUB 